import Link from "next/link"; import { notFound } from "next/navigation"; import { ArrowLeft } from "lucide-react"; import { requireAdmin } from "@/lib/session"; import { CONCRETE_NETWORKS, PROVIDER_IDS, getDomainProfile } from "@/lib/queries/admin"; import { formatDate, formatMs, formatNumber, formatPercent, formatUsd } from "@/lib/format"; import { PageHeader } from "@/components/ui/page-header"; import { Badge, StatusBadge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Stat, StatGrid } from "@/components/ui/stat"; import { Table, TableBody, TableCell, TableEmpty, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { DateCell, KV, Mono, NetworkBadge, Panel, ProviderBadge, numCell } from "@/components/admin/primitives"; import { DomainPolicyEditor, ResetDomainStatsButton } from "@/components/admin/domain-policy-editor"; export const dynamic = "force-dynamic"; export default async function AdminDomainDetail({ params }: { params: Promise<{ domain: string }> }) { await requireAdmin(); const { domain: raw } = await params; const domain = decodeURIComponent(raw).toLowerCase(); const d = await getDomainProfile(domain); if (!d) notFound(); const p = d.profile; const routes = Object.entries(p.routeStats ?? {}).sort((a, b) => b[1].n - a[1].n); const availableKeys = Array.from(new Set([...routes.map(([k]) => k), ...PROVIDER_IDS.flatMap((pr) => CONCRETE_NETWORKS.map((n) => `${pr}:${n}`))])); return ( <>
{p.domain}} description={`Learned since ${formatDate(p.updatedAt)} · last seen ${formatDate(p.lastSeenAt)}`} actions={ <> } />
Route n ok Success Blocked Avg lat. Cost Cost / success {routes.length === 0 ? ( No route statistics yet. ) : ( routes.map(([key, s]) => { const [prov, net] = key.split(":"); return ( {s.n} {s.ok} {formatPercent(s.n ? (s.ok / s.n) * 100 : null)} {formatPercent(s.n ? (s.blocked / s.n) * 100 : null)} {formatMs(s.lat)} {formatUsd(s.cost, true)} {formatUsd(s.ok ? s.cost / s.ok : null, true)} ); }) )}
}, { label: "Preferred network", value: }, { label: "Policy JSON", value: p.policy ? JSON.stringify(p.policy) : "none", mono: true, span: true }, ]} />
Request Organization Status Network Attempts Latency When {d.recent.length === 0 ? ( No requests in the last 7 days. ) : ( d.recent.map((r) => ( {r.id} {r.orgName ?? "—"} {r.errorCode ? {r.errorCode} : null} {r.httpStatus ? {r.httpStatus} : null} {r.attempts} {formatMs(r.latencyMs)} )) )}
); }